// import com.alibaba.druid.DbType;
// import com.alibaba.druid.sql.SQLUtils;
// import com.alibaba.druid.sql.ast.SQLDataType;
// import com.alibaba.druid.sql.ast.SQLDataTypeImpl;
// import com.alibaba.druid.sql.ast.SQLExprImpl;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;

// import java.util.Collections;
// import java.util.List;
#pragma once
#include <string>
#include <list>
#include "../SQLExprImpl.h"
#include "SQLValuableExpr.h"
class SQLDataType;
class SQLASTVisitor;
class SQLObject;
class Object;

class SQLJSONExpr : public SQLExprImpl, virtual public SQLValuableExpr
{
public:
  static SQLDataType_ptr DATA_TYPE;

  string_ptr  literal;

  SQLJSONExpr();

  SQLJSONExpr(string_ptr  literal);
  SHAREDOBJECT(SQLJSONExpr) ;
  virtual SQLObject_ptr clone();

  string_ptr  getValue();

  string_ptr  getLiteral();

  void setLiteral(string_ptr  literal);

  //@Override
  bool equals(Object_ptr o);

  //@Override
  int hashCode();

  //@Override
  void accept0(SQLASTVisitor_ptr visitor);

  string_ptr  toString();

  SQLDataType_ptr computeDataType();

  //@Override
  SQLObject_list_ptr  getChildren();
};
